Desenvolvimento para Dispositivos Móveis
Aula 02
Prof. Dr. Raulcézar Alves
raulcezar@gmail.com
Android Studio
- Ambiente de Desenvolvimento Integrado (IDE) para desenvolvimento Android
- substituiu o Android Development Tools (ADT), plugin para Eclipse IDE
- é uma plataforma inteira dedicada para Android, melhor que um simples plugin
Estrutura de um Projeto Android
Projeto é uma árvore de diretórios e arquivos, como abrir um EXPLORER no windows
Estrutura de um Projeto Android
app é a raiz do projeto
diretório manifests
AndroidManifest.xml
- arquivo de configuração do aplicativo
- define permissões de acesso aos recursos do dispositivo, como: câmera, gps, giroscópio, etc
- cadastra as funcionalidades (activities) do app
funcionalidades de um app
- cada funcionalidade/tela de seu app é um par de layout (visão) e activity (controle)
- visão: é aquilo que o usuário vê, interface gráfica. Geralmente escritos em XML e salvos na pasta res
- controle: programa que se liga a visão para buscar, processar, e gerar resultados. Escritos em Java e salvos na pasta java
funcionalidades de um app
Padrão: activity_funcionalidade.xml e FuncionalidadeActivity.java
- Por exemplo, uma funcionalidade de Login teria:
- visão: activity_login.xml
- controle: LoginActivity.java
funcionalidades de um app
Ligação entre Controle-Visão
- exemplo: MainActivity.java
- na classe Java é descrito qual layout ela controla
funcionalidades de um app
Ligação entre Controle-Visão
- exemplo: activity_main.xml
- no xml da tela também se referencia a classe, é possivel ter um preview da tela
diretório java
- pacote para classes de controle (activities)
- pacotes para classes de teste
diretório res (interface gráfcica)
- drawable: arquivos de mídia, imagens, icones, etc
- layout: arquivos XML de visão dos controles
- mipmap: arquivos de lançador do aplicativo para diferentes dispositivos
- values: arquivos de constantes para cores, textos e estilos
Acompanhamento de IMC Familiar
Layout e Funcionamento
Criando um novo App
File >> New >> Project
Criando um novo App
Nome e pacote de armazenamento para o Projeto
Criando um novo App
Selecionar Dispositívos e API, traz a mais compatível
Criando um novo App
Selecionar Template, neste caso vazio
Criando um novo App
Nomear a Activity principal, deixar "main"
Funcionalidade - Formulário (Main)
Visão: activity_main.xml
Visão
Visão
Text: campos de texto
Visão
Buttons: botões
Visão
Widgets: ferramentas especiais
Visão
Layout (View Group): distribuição de elementos na tela
Visão
Relative Layout: posiciona um elemento novo com base na posição de um elemento já disponível na tela
Visão
Linear Layout: posiciona elementos em sequência, em uma única direção (android:orientation)
Visão
Containers: podem funcionar como layouts, mas possuem recursos interativos
Visão
Google: recursos específicos da Google, como Maps
Visão
Legacy: recursos antigos
Funcionalidade - Formulário (Main)
Visão: activity_main.xml
Funcionalidade - Formulário (Main)
Visão: activity_main.xml
Mudar layout para um elemento embaixo do outro:
- setar LinearLayout
- setar orientação para vertical
Funcionalidade - Formulário (Main)
Visão: activity_main.xml
Adicionar elementos da tela: textos, campos e botões
Funcionalidade - Formulário (Main)
Visão: activity_main.xml
Textos constantes ficam em strings.xml
<resources>
<string name="app_name">IMC</string>
<string name="imc">IMC</string>
<string name="classificacao">Classificação</string>
<string name="nome">*Nome:</string>
<string name="peso">*Peso:</string>
<string name="altura">*Altura:</string>
</resources>
Funcionalidade - Formulário (Main)
Visão: activity_main.xml
Código
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:textSize="25sp"
android:layout_marginTop="10dp"
android:text="@string/imc"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:inputType="numberSigned"
android:text="@string/imc"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:textSize="25sp"
android:text="@string/classificacao"
/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/nome"
android:layout_marginTop="10dp"
android:layout_marginLeft="10dp"
/>
<EditText
android:id="@+id/nome"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="text"
android:layout_marginLeft="10dp"
/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/peso"
android:layout_marginTop="10dp"
android:layout_marginLeft="10dp"
/>
<EditText
android:id="@+id/peso"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:inputType="text"
android:layout_marginLeft="10dp"
/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/altura"
android:layout_marginTop="10dp"
android:layout_marginLeft="10dp"
/>
<EditText
android:id="@+id/altura"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:inputType="text"
android:layout_marginLeft="10dp"
/>
<Button
android:id="@+id/calcular"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_margin="10dp"
android:text="Calcular"/>
</LinearLayout>
Funcionalidade - Formulário (Main)
Visão: activity_main.xml
Design Preview
Funcionalidade - Formulário (Main)
Visão: activity_main.xml
Trocar cores primárias do App em colors.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="colorPrimary">#18941B</color>
<color name="colorPrimaryDark">#20C624</color>
<color name="colorAccent">#BBEE00</color>
</resources>
Funcionalidade - Formulário (Main)
Visão: activity_main.xml
Trocar cores dos elementos com as cores definidas
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:textSize="25sp"
android:layout_marginTop="10dp"
android:text="@string/imc"
android:textColor="@color/colorPrimary"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:inputType="numberSigned"
android:text="@string/imc"
android:textColor="@color/colorAccent"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:textSize="25sp"
android:text="@string/classificacao"
android:textColor="@color/colorPrimaryDark"
/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/nome"
android:layout_marginTop="10dp"
android:layout_marginLeft="10dp"
android:textColor="@color/colorAccent"
/>
<EditText
android:id="@+id/nome"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="text"
android:layout_marginLeft="10dp"
android:textColor="@color/colorPrimary"
/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/peso"
android:layout_marginTop="10dp"
android:layout_marginLeft="10dp"
android:textColor="@color/colorAccent"
/>
<EditText
android:id="@+id/peso"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:inputType="text"
android:layout_marginLeft="10dp"
android:textColor="@color/colorPrimary"
/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/altura"
android:layout_marginTop="10dp"
android:layout_marginLeft="10dp"
android:textColor="@color/colorAccent"
/>
<EditText
android:id="@+id/altura"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:inputType="text"
android:layout_marginLeft="10dp"
android:textColor="@color/colorPrimary"
/>
<Button
android:id="@+id/calcular"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_margin="10dp"
android:text="Calcular"
android:background="@color/colorPrimary"
android:textColor="#FFF"/>
</LinearLayout>
Funcionalidade - Formulário (Main)
Visão: activity_main.xml
Design Preview
Funcionalidade - Formulário (Main)
Visão: activity_main.xml
Configurar imagem de fundo
- Faça download da imagem fundo.png
- Copie o arquivo para as pastas de drawable
Funcionalidade - Formulário (Main)
Visão: activity_main.xml
Configurar imagem de fundo
- Adicione esta imagem de fundo ao background de seu layout
- android:background="@drawable/fundo"
Funcionalidade - Formulário (Main)
Visão: activity_main.xml
Configurar icone para o App
- Faça download do arquivo mipmap.rar
- Descompacte o arquivo e substitua as pastas do seu projeto
Funcionalidade - Formulário (Main)
Visão: activity_main.xml
Funcionalidade - Formulário (Main)
Visão: activity_main.xml
Configurar icone para o App
- Modifique o arquivo AndroidManifest.xml
Funcionalidade - Formulário (Main)
Visão: activity_main.xml
Configurar icone para o App
- Pela primeira vez vamos abrir a classe Java de controle da nossa tela
- Abra a classe MainActivity e adicione os seguintes comandos
Funcionalidade - Formulário (Main)
Visão: activity_main.xml
Design Preview